package com.bfly.mall.order.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.bfly.core.base.entity.BaseEntity;
import com.bfly.mall.order.enums.RefundStatusEnum;

import java.io.Serializable;
import java.math.BigDecimal;

/**
 * 退款申请日志
 *
 * @author 长沙商脉科技有限公司
 * @date 2020/10/7 23:57
 */
@TableName(value = "order_refund", resultMap = "OrderRefundResultMap")
public class OrderRefund extends BaseEntity implements Serializable {

    private static final long serialVersionUID = 3239524961855081611L;

    /**
     * 退款单号
     * @author 长沙商脉科技有限公司
     * @date 2020/12/12 0:58
     */
    @TableField("refund_no")
    private String refundNo;

    /**
     * 订单号
     *
     * @author 长沙商脉科技有限公司
     * @date 2020/10/7 23:58
     */
    @TableField("order_no")
    private String orderNo;

    /**
     * 第三方平台退款单号
     *
     * @author 长沙商脉科技有限公司
     * @date 2020/12/11 13:45
     */
    @TableField("refund_id")
    private String refundId;

    /**
     * 操作者ID
     *
     * @author 长沙商脉科技有限公司
     * @date 2020/10/7 23:58
     */
    @TableField("op_id")
    private int opId;

    /**
     * 操作者名称
     *
     * @author 长沙商脉科技有限公司
     * @date 2020/10/7 23:59
     */
    @TableField("op_name")
    private String opName;

    /**
     * 操作者类型
     *
     * @author 长沙商脉科技有限公司
     * @date 2020/10/7 23:59
     * @see com.bfly.core.enums.AccessRole
     */
    @TableField("op_type")
    private int opType;

    /**
     * 申请退款原因
     *
     * @author 长沙商脉科技有限公司
     * @date 2020/10/8 0:00
     */
    @TableField("apply_reason")
    private String applyReason;

    /**
     * 订单金额
     *
     * @author 长沙商脉科技有限公司
     * @date 2020/10/8 0:00
     */
    @TableField("order_price")
    private BigDecimal orderPrice;

    /**
     * 退款金额--回写
     *
     * @author 长沙商脉科技有限公司
     * @date 2020/10/8 0:01
     */
    @TableField("refund_price")
    private BigDecimal refundPrice;

    /**
     * 退款方式
     *
     * @author 长沙商脉科技有限公司
     * @date 2020/10/8 0:01
     * @see com.bfly.mall.order.enums.PayTypeEnum
     */
    @TableField("refund_method")
    private int refundMethod;

    /**
     * 退款申请状态
     *
     * @author 长沙商脉科技有限公司
     * @date 2020/10/8 0:01
     * @see com.bfly.mall.order.enums.RefundStatusEnum
     */
    @TableField("status")
    private int status;

    /**
     * 退款进度状态
     *
     * @author 长沙商脉科技有限公司
     * @date 2020/10/8 23:32
     * @see com.bfly.mall.order.enums.RefundProgressEnum
     */
    @TableField("progress_status")
    private int progressStatus;

    /**
     * 备注---- 管理员同意或拒绝退款回写原因
     *
     * @author 长沙商脉科技有限公司
     * @date 2020/10/8 0:02
     */
    @TableField("remark")
    private String remark;

    /**
     * 判断退款单是否能被操作--- 一旦同意或驳回操作之后 退款单将不可以再次操作
     * 初始状态的退款单可操作
     *
     * @author 长沙商脉科技有限公司
     * @date 2020/10/9 1:15
     */
    public boolean isCanOp() {
        RefundStatusEnum statusEnum = RefundStatusEnum.getStatus(getStatus());
        return statusEnum == RefundStatusEnum.WAIT;
    }

    public String getRefundNo() {
        return refundNo;
    }

    public void setRefundNo(String refundNo) {
        this.refundNo = refundNo;
    }

    public String getRefundId() {
        return refundId;
    }

    public void setRefundId(String refundId) {
        this.refundId = refundId;
    }

    public int getProgressStatus() {
        return progressStatus;
    }

    public void setProgressStatus(int progressStatus) {
        this.progressStatus = progressStatus;
    }

    public String getOrderNo() {
        return orderNo;
    }

    public void setOrderNo(String orderNo) {
        this.orderNo = orderNo;
    }

    public int getOpId() {
        return opId;
    }

    public void setOpId(int opId) {
        this.opId = opId;
    }

    public String getOpName() {
        return opName;
    }

    public void setOpName(String opName) {
        this.opName = opName;
    }

    public int getOpType() {
        return opType;
    }

    public void setOpType(int opType) {
        this.opType = opType;
    }

    public String getApplyReason() {
        return applyReason;
    }

    public void setApplyReason(String applyReason) {
        this.applyReason = applyReason;
    }

    public BigDecimal getOrderPrice() {
        return orderPrice;
    }

    public void setOrderPrice(BigDecimal orderPrice) {
        this.orderPrice = orderPrice;
    }

    public BigDecimal getRefundPrice() {
        return refundPrice;
    }

    public void setRefundPrice(BigDecimal refundPrice) {
        this.refundPrice = refundPrice;
    }

    public int getRefundMethod() {
        return refundMethod;
    }

    public void setRefundMethod(int refundMethod) {
        this.refundMethod = refundMethod;
    }

    public int getStatus() {
        return status;
    }

    public void setStatus(int status) {
        this.status = status;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }
}
